package com.gpframework.module.order.domain.req;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.gpframework.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import javax.validation.constraints.*;

import java.util.Date;
import java.math.BigDecimal;
import java.util.List;

/**
 * @ClassName GpOrderAdd
 * @Author gpframework
 * @Date 2023-06-16
 * @Version 1.0.0
 * @Description 销售单Add对象
 */
@Data
@ToString
@EqualsAndHashCode
@NoArgsConstructor
@Accessors(chain = true)
public class GpOrderAdd {
    private static final long serialVersionUID = 1L;

    /** 品牌id */
    @ApiModelProperty("品牌id")
    private String brandId;

    /** 品牌名称 */
    @ApiModelProperty("品牌名称")
    private String brandName;

    /** 上级id */
    @ApiModelProperty("上级id")
    private Long parentId;

    /** 订单特性(大货/散剪) */
    @ApiModelProperty("订单特性(大货/散剪)")
    private String orderCharacteristics;

    /** 订单状态 */
    @ApiModelProperty("订单状态")
    private String orderStatus;

    /** 订单二维码 */
    @ApiModelProperty("订单二维码")
    private String orderQrCode;

    /** 流入时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("流入时间")
    private Date flowInTime;

    /** 订单时长 */
    @ApiModelProperty("订单时长")
    private Long orderDuration;

    /** 工作量 */
    @ApiModelProperty("工作量")
    private BigDecimal workload;

    /** 超期时长 */
    @ApiModelProperty("超期时长")
    private Long overdueDuration;

    /** 是否打印二维码 */
    @ApiModelProperty("是否打印二维码")
    private boolean isPrintQrCode;

    /** 是否异常 */
    @ApiModelProperty("是否异常")
    private Integer isException;

    /** 异常类型： 1欠货 2等通知 3今日到货 */
    @ApiModelProperty("异常类型： 1欠货 2等通知 3今日到货")
    private String exceptionType;

    /** 是否加急 */
    @ApiModelProperty("是否加急")
    private Integer isUrgent;

    /** 是否作废 */
    @ApiModelProperty("是否作废")
    private Integer isCancel;

    @ApiModelProperty("是否暂停")
    private Integer isSuspend;

    @ApiModelProperty("是否验货")
    private Integer isInspection;

    @ApiModelProperty("是否转发图片")
    private Integer isForwardImg;

    @ApiModelProperty("是否转发视频")
    private Integer isForwardVideo;

    @ApiModelProperty("是否转发")
    private Integer isForward;

    @ApiModelProperty("是否需要上传细码")
    private Integer isUploadFineCode;

    @ApiModelProperty("暂停开始时间")
    private Date suspendStartTime;

    @ApiModelProperty("暂停结束时间")
    private Date suspendEndTime;

    @ApiModelProperty("暂停时长")
    private Long suspendDuration;

    /** 操作备注 */
    @ApiModelProperty("操作备注")
    private String operationRemark;

    /** 供货商 */
    @ApiModelProperty("供货商")
    private String supplier;

    /** 仓库 */
    @ApiModelProperty("仓库")
    private String warehouse;

    /** 表单名称 */
    @ApiModelProperty("表单名称")
    @JsonProperty("FormName")
    private String formName;

    /** 档口 */
    @ApiModelProperty("档口")
    @JsonProperty("OrganiseUnit")
    private String organiseUnit;

    /** 表单类型 */
    @ApiModelProperty("表单类型")
    @JsonProperty("FormType")
    private Long formType;

    /** 客户名称 */
    @ApiModelProperty("客户名称")
    @JsonProperty("ClientName")
    private String clientName;

    /** 订单编号 */
    @ApiModelProperty("订单编号")
    @JsonProperty("FormCode")
    private String formCode;

    /** 预期付款金额 */
    @ApiModelProperty("预期付款金额")
    @JsonProperty("ExpectPayment")
    private String expectPayment;

    /** 总分支数量 */
    @ApiModelProperty("总分支数量")
    @JsonProperty("TotalBranchesQuantity")
    private String totalBranchesQuantity;

    /** 总数量 */
    @ApiModelProperty("总数量")
    @JsonProperty("TotalQuantity")
    private String totalQuantity;

    /** 总邮寄数量 */
    @ApiModelProperty("总邮寄数量")
    @JsonProperty("TotalPostQuantity")
    private String totalPostQuantity;

    /** 运费 */
    @ApiModelProperty("运费")
    @JsonProperty("Freight")
    private String freight;

    /** 备注 */
    @ApiModelProperty("备注")
    @JsonProperty("Remark")
    private String remark;

    /** 联系人及电话 */
    @ApiModelProperty("联系人及电话")
    @JsonProperty("LinkManAndPhone")
    private String linkManAndPhone;

    /** 地址 */
    @ApiModelProperty("地址")
    @JsonProperty("Address")
    private String address;

    /** 销售员 */
    @ApiModelProperty("销售员")
    private String salesman;

    /** 是否有效 */
    @ApiModelProperty("是否有效")
    @JsonProperty("IsValid")
    private boolean isValid;

    /** 是否显示批次号 */
    @ApiModelProperty("是否显示批次号")
    @JsonProperty("IsShowBatchNO")
    private boolean isShowBatchNo;

    /** 是否显示运费 */
    @ApiModelProperty("是否显示运费")
    @JsonProperty("IsShowFreight")
    private boolean isShowFreight;

    /** 是否显示备注 */
    @ApiModelProperty("是否显示备注")
    @JsonProperty("IsShowRemark")
    private boolean isShowRemark;

    /** 是否显示联系人及电话 */
    @ApiModelProperty("是否显示联系人及电话")
    @JsonProperty("IsShowLinkManAndPhone")
    private boolean isShowLinkManAndPhone;

    /** 是否显示地址 */
    @ApiModelProperty("是否显示地址")
    @JsonProperty("IsShowAddress")
    private boolean isShowAddress;

    /** 是否显示邮寄数量 */
    @ApiModelProperty("是否显示邮寄数量")
    @JsonProperty("IsShowPostQuantity")
    private boolean isShowPostQuantity;

    /** 是否显示价格 */
    @ApiModelProperty("是否显示价格")
    @JsonProperty("IsShowPrice")
    private boolean isShowPrice;

    /** 调整金额 */
    @ApiModelProperty("调整金额")
    @JsonProperty("AdjustAmount")
    private String adjustAmount;

    /** 预付金额 */
    @ApiModelProperty("预付金额")
    @JsonProperty("AdvanceAmount")
    private String advanceAmount;

    /** 收款金额 */
    @ApiModelProperty("收款金额")
    @JsonProperty("CollectingAmount")
    private String collectingAmount;

    /** 已收/已付 */
    @ApiModelProperty("已收/已付")
    @JsonProperty("PaidInOrOut")
    private String paidInOrOut;

    /** 订单余额 */
    @ApiModelProperty("订单余额")
    @JsonProperty("OrderBalance")
    private String orderBalance;

    /** 订单云编号 */
    @ApiModelProperty("订单云编号")
    @JsonProperty("OrderCloudNumber")
    private String orderCloudNumber;

    /** 产品列表 */
    @ApiModelProperty("产品列表")
    @JsonProperty("ProductList")
    private List<GpProductUpdate> productList;

    /**
     * 创建者
     */
    @ApiModelProperty("创建者")
    private String createBy;

    /**
     * 跟单人
     */
    @ApiModelProperty("跟单人")
    @JsonProperty("Merchandiser")
    private String merchandiser;

    /**
     * 跟单人
     */
    @ApiModelProperty("跟单人")
    @JsonProperty("IsShowDeliverInfo")
    private boolean isShowDeliverInfo;

    /**
     * 跟单人
     */
    @ApiModelProperty("跟单人")
    @JsonProperty("IsShowMerchandiser")
    private boolean isShowMerchandiser;

    /**
     * 快递公司
     */
    @ApiModelProperty("快递公司")
    @JsonProperty("ExpressCompany")
    private String expressCompany;

    /**
     * 快递号码
     */
    @ApiModelProperty("快递号码")
    @JsonProperty("ExpressNumber")
    private String expressNumber;

    /**
     * 快递号码
     */
    @ApiModelProperty("快递号码")
    @JsonProperty("ExpressSnapshot")
    private String expressSnapshot;

}
